﻿using System;
using System.Collections.Generic;

/*BaseScene里面需要添加角色 , 触发器
 * 相机逻辑也在这里面,任何包含场景的逻辑都要在此之中处理
 * 关于创建英雄,创建怪物,技能等具体功能实现会在它的子类中完成,(因为不是所有的创建都是通用的,一些只有在战斗场景中才会触发,
 * 比如PVP,PVE等场景都有类似创造英雄,怪物,技能等方法,可以在BateScene下面在创建一个战斗场景的基类,之后PVP,PVE等都会继承战斗场景
 * 的基类,在这个基类中可以u事件创建怪物,英雄,技能这些方法)
 * 
 * 没完成触发器*/

namespace XHFrame
{
    /// <summary>
    /// 基础场景控制
    /// </summary>
    public class BaseScene : BaseModule
    {
        protected List<BaseActor> actorList = null;
        public void AddActor(BaseActor baseActor)
        {
            if (null != baseActor && actorList.Contains(baseActor))
            {
                actorList.Add(baseActor);
                baseActor.CorrntScene = this;
                baseActor.PropertyChange += OnActorPropertyChange;
                // baseActor.load
            }
        }

        public void RemoveActor(BaseActor actor)
        {
            if (null != actor && actorList.Contains(actor))
            {
                actorList.Remove(actor);
                actor.PropertyChange -= OnActorPropertyChange;
                // actor.Remove();
                actor = null;
            }
        }
        public BaseScene()
        {
            actorList = new List<BaseActor>();
        }

        public virtual BaseActor GetActorByID(int ID)
        {

            if (null != actorList && actorList.Count > 0)
                for (int i = 0; i < actorList.Count; i++)
                    if (actorList[i].ID == ID)
                        return actorList[i];
            return null;
        }

        /// <summary>
        /// 角色属性改变事件
        /// </summary>
        protected void OnActorPropertyChange(BaseActor actor, int id, object oldValue, object newValue)
        {

        }
    }
}
